RequestSlaveState

请求 EtherCAT 从站进入指定的 EtherCAT 状态。例如,若状态为 Op,而所请求的状态为 PreOp,则从站状态将会变更为 Op -> SafeOp -> PreOp;若状态为 Init,而所请求的状态为 Op,则从站状态将会变更为 Init -> PreOp -> SafeOp -> Op。

语法

KsCommandStatus RequestSlaveState(
     int SlaveId,
     EthercatState State
);

参数

SlaveId:从站阵列的索引。当 EtherCAT 从站装置启动时,此索引具有与 SlaveId 相同的值,该值对应于从站装置在网路中的位置。请注意,在 EtherCAT 进入运行 (Op) 状态后,加入或移除网路上的任何从站装置将改变各装置在网路中的位置 (SlaveId)。尽管如此,从站的索引将保持不变。新增的装置将排列在阵列的末端。对于更改后的所有从站,索引和 SlaveId 将不再匹配。上述行为模式仅适用于实体装置;不适用于模拟装置。详细资讯请参阅 EnableHotConnect 中的使用案例。

State:请求的 EtherCAT 状态。请见 EthercatState 类型。

回传值

回传 KsCommandStatus 结构。

备注

可用的 EtherCAT 状态

ecatInit, ecatBoot, ecatPreOP, ecatSafeOP, ecatOP

范例

复制
SlaveStatus sStatus = { 0 };
nRet = GetSlaveById(0, &sStatus);
if (nRet == errNoError)
{
    if (sStatus.State != ecatOffline) {
        // You can follow the EtherCAT state diagram, or just enter the desired state.

        // Switch to Init
        WaitForCommand(3, TRUE, RequestSlaveState(0, ecatInit));

        // Operate the slave in Init state

        // Switch to Bootstrap
        WaitForCommand(3, TRUE, RequestSlaveState(0, ecatBoot));

        // Operate the slave in Bootstrap state

        // Switch back to original state
        WaitForCommand(3, TRUE, RequestSlaveState(0, sStatus.State));
    }
}

使用需求

  RT Win32
最低支援版本 4.0 4.0
标头档 ksapi.h ksapi.h
程式库 KsApi_Rtss.lib KsApi.lib

参见

GetSlaveById

GetStatus

RequestState